home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
bbs
/
rchat401.zip
/
RBBSCHAT.DOC
< prev
next >
Wrap
Text File
|
1992-09-14
|
13KB
|
263 lines
RBBS-PC Internode chat modifications Release 4.01 September 14 1992
Copyright 1989-1992 by John Morris All Rights Reserved.
Written By:
John Morris
TradeWars Software
I can be reached on my BBS:
The Abandoned Land
(702)359-1303 Voice (limited hours.. I work evenings..)
(702)359-1138 Strictly V32
(702)359-0629 USR-HST
RBBS-NET 8:919/1 or 2 Fidonet 1:213/760 or 761
Included are files which can be BLED into the current RBBS 17.4 code,
but it may be a LOT faster just to merge it in by hand. These files are:
RBBSCHAT.DOC this document
R-PCCHAT.MRG to be merged into RBBS-PC.BAS
RSB2CHAT.MRG to be merged into RBBSSUB2.BAS
RSB4CHAT.MRG to be merged into RBBSSUB4.BAS
RSB5CHAT.MRG to be merged into RBBSSUB5.BAS
R-PCANCH.MRG Merged into RBBS-PC when using RCHAT with ANSIED.
(used in place of R-PCCHAT.MRG)
RSB2ANCH.MRG Merged into RBBSSUB2 when using RCHAT with ANSIED.
(used in place of RSB2CHAT.MRG)
RSB4ANCH.MRG Merged into RBBSSUB4 when using RCHAT with ANSIED.
(used in place of RSB4CHAT.MRG)
RSB5ANCH.MRG Merged into RBBSSUB5 when using RCHAT with ANSIED.
(used in place of RSB5CHAT.MRG)
RBBS-VAR.MOD sample include file needed for RCHAT401.BAS
RBBSANCH.MOD sample include file needed for RCHAT401 & ANSIED.
RCHAT401.BAS Compiled, then added into RBBS-PC.EXE at link time..
RCSUB401.BAS Compiled, then added into RBBS-PC.EXE at link time..
RBBSCHAT.BAT sample batch file to merge in Chat Mods.
CHAT.MNU chat help, a menu list of chat commands.
CHATC.MNU color chat menu
BAS2MOD.ZIP Converts RBBS-VAR.BAS to RBBS-VAR.MOD, and will also
optionally add in global variables into both of those
files.
This code is intended to be compiled with QuickBASIC 3.0 or later, mainly
because I make generous use of block IF..END IF block statements. I also
don't use a whole lot in the way of line-numbers, which means I use quite
a few DO..LOOP statements. Since most everyone nowadays is using at least
QB3, I don't think this will be a problem.
This will one of many releases of this code, and it is my fifth release
of my internode chat code. I wanted the ability of the user to page another,
and I also wanted to see if I could emulate a 'True chat'. I do realize that
there are quite a few chat products out there in BBS-land, but none follows
the RBBS tradition of including source code, which means that they have to be
implemented as doors.
My logic is that if a system is popular enough to have multiple nodes, it has
a good file & message bases (doors are generally secondary in multi-node
systems) So, why should a guy have to open a door? Just my humble opinion.
So anyways, here is the code for you to play with.
You are free to modify the code for implementation in your system, but you
may not distribute this code in modified form! If you'd like to see your
mods incorporated into the official release of this mod, then give me a
jingle, and I'll happy to talk with you about your mods.
How it's -supposed- to work
---------------------------
RCHAT 401 uses another slightly different method of entering the chat mode.
Previous versions used a separate command, but that was a major kludge.
RCHAT 401 uses the W)hos on command to start the chat. A much nicer
interface for the user.
As before, for best performance, and to save where and tear on your
hard disk, I suggest modifying RCHAT400.BAS where it says:
CONST ChatFileName$ = "H:RBBSCHAT.DEF"
Change that to a RAM drive. For instance, if your RAM drive was drive M,
you'd change it to:
CONST ChatFileName$ = "M:RBBSCHAT.DEF"
RCHAT 401 attempts to use RBBS-PC's own file/record locking when writing
to RBBSCHAT.DEF. Because of the extremely high number of locks and unlocks
I 'REMarked' out the code which tells you certain files are locked on line
25. You will continue to see most of the file locks though. Most SysOps
will not even notice this change.
Before you merge things in
--------------------------
RCHAT401 uses variables which are local to any code in RCHAT401, along
with the global variables used by RBBS. (Also known as the 'Z' variables)
Because of this, you must modify your RBBS-VAR.BAS file. First, you need
to add the variable:
ZAvailableForChat
to the file. Put it in the file in alphabetical order. (so you remember
where its at)
To do this use BAS2MOD.EXE like this:
Bas2Mod ZAvailableForChat
Bas2Mod will add the variable ZAvailableForChat to your RBBS-VAR.BAS file
and also create a RBBS-VAR.MOD file automatically.
All mods are commented with ' RCHAT' starting at column 70. If you need
to put these merges in by hand, then look for lines with the ' RCHAT'
remarks.
NOTE: I've included a 17.4 RBBS-VAR.MOD file AS AN EXAMPLE. You may use
it if you are running a stock 17.4 RBBS-PC.
Using RCHAT with Tom Collin's ANSIED
------------------------------------
Right out of the box, RCHAT and ANSIED won't quite work together. In a
couple of areas the merges for each mod wipe out code the other mod
needs. So, I'm providing at alternate set of merges which will help
you merge RCHAT and ANSIED together easier. The files are:
xxxxANCH.MRG where 'xxxx' is the module name. Use the in place of the
regular 'xxxxCHAT.MRG' files for that particular SUB.
RBBSSUB3.BAS uses RSB3CHAT.MRG in either case.
These are not guaranteed to work. These merges are mainly 'mods' to my
own 'mods' and may not work in the future. But they have been working
for almost a year on my system.
I also added a slight mod which will re-enter the ANSI editor if the user
chooses to E)dit more..
These merges work for RBBS-PC 17.4 and ANSIED 2.44.
You may find ANSIED on any fine RBBS-PC system. Thanks, Tom!
How to compile and link RCHAT401.BAS and RCSUB401.BAS
-----------------------------------------------------
I've tried several different ways of compiling RCHAT400. The best way
is simply to use to the commands:
QB RCHAT400.BAS /O;
QB RCSUB400.BAS /O/X;
That's it! And add RCHAT401.OBJ and RCSUB401.OBJ to your list of OBJect
modules to link together.
Update History:
---------------
02/14/90 First bungled release.. forgot to put CHATHELP into the ZIP
1.00 file I uploaded to a couple places. Fixed that on my system,
but a lot of guys missed it.
03/22/90 Second release. Went and added some improvements, and implemented
2.00 some of Tom Macks ideas for internode chat. These include
a way for each user to 'lock-out' a page attempt from other
nodes. This allows them to roam in privacy. The option is toggled
from the (where else?) T)oggle options prompt.
Thanks go out to Cary Kolker for doing something very similar to
what I was planning for the TrueCh@. Basically to keep some
systems from dropping chars here-and-there, Cary implemented
the TrueCh@ in a 'ring buffer' concept. Adding only about 6
or 7 lines to the existing code.
Also, I attempted to implement a way to save the node chats to
disk (as per the SysOps option, check RCHAT300.MRG in the comments
for info on how to turn this option on.. I didn't wanna screw
around with CONFIG) I took the following ideas into consideration:
1: Each chat should have its own unique filename.
-OR, 1a: would one file be okay??
2: One node should write the chat to disk to make sure that
the text is saved in correct order. And this also keeps
the entire chat in the same file.
-OR, 2a: would it be okay if each node:
a: opened the chat file (in file-locked mode)
b: appended its text to the end
c: closed the chat file
for EACH line typed by EACH node?
3: Users are told if the SysOp has told the chat mods to save the
chat to a file.
Problem with above??:
---------------------
Anyways, Using my ideas (1, 1a, 2 and 2a) there are lots of
problems to consider.. not being a great programmer I might
have missed some brilliant idea, but these are problems I see
with the above:
Ideas 1a and 2a would work fine together, but how would we know
where one chat starts and/or ends? or does it matter?
Ideas 1 and 2a present another problem, how would each node
know the unique filename for that chat?
There are more problems, just give it a little thought.
I chose to implement ideas 1 and 2 in this fashion: The node
that initiates the chat (in this case one node pages another)
saves the chat to disk using a unique filename (using time and
date info). If another user joins in, that node realizes it has
not paged, and does try to save anything to disk. What happens
when nodes are 'squelched'?
Maybe, each chat should have a 'process number' which identifies
the chat as unique.
Actually, I'm not going to say: "This is how it works, so live
with it!" I'd rather get input from every SysOp who wants to
contribute and then proceed from there. How should the above
ideas be worked out?
In the end, I think that I'll plan each chat as a separate
'process'. Each process has its own unique name or number, and
then the chats will be saved according to process number.
08/28/90 Heavily modified the chat code. All chats are now character by
3.00 character. This works fine even with multiple nodes. A TrueChat
is now considered a private chat between two nodes, and does
not have its own separate subroutine. The mod now uses a menu
system instead of using separate Ctrl-x sequences for each
'command' You now type 'Ctrl-Q or ESCape' to get the chat menu,
and a chat command prompt, and you can then page someone, see
who is on, etc, from the prompt. To exit back into Chat, you
simply type C (for Chat) or [ENTER]. The W)hos on section was
rewritten to tell the user what the other user might be doing.
For instance, a user might be in Doors, or may be in the message
system, or in the file system. Whos on will now tell them. If the
user sees a CITY after the other users name, they are likely
to be able to page them. The file number used by RCHAT300 was
changed to 9, becuase I failed to realize that file 7 was used
by the voice board driver.
06/22/92 Changed the user interface so a user can enter chat when using
4.00 the W)hos on command. Changes to work with RBBS 17.4 and
special merges for use with Tome Collin's ANSIED.
09/14/92 The call in RCHAT400.BAS had a call to Graphic to that it could
4.01 display a color menu.. Graphics accepts 1 parm.. I had RCHAT
giving it 2 parms.. never displayed a glitch in the year or
so that I ran it.. but try compiling it with BC71, and/or
running it under DV (as some of you tried..) it just doesn't
work.. Special thanks to Tate Biersack for finding this
nasty error..
Revision numbers for RBBS Chat mods.
------------------------------------
Revision numbers are as follows: x.yz
x gets incremented when code is added
or heavily modified.
y gets incremented on a major bug fix
release
z gets incremented on a minor fix
End of RBBSChat.doc